/*
  等差数列
  题目描述
    等差数列是指从第二项起，每一项与它的前一项的差等于同一个常数的一种数列。
    输入 n 个数，判断这 n 个数是否可以组成等差数列，如果不可以输出 NO，可以输出 YES。
  输入描述
    第一行一个整数 n，接下去 n 个整数
  输出描述
    YES 或者 NO
  样例1
    输入
      5
      10 9 7 6 8
    输出
      YES
  提示
    n <= 1000, 每个数的范围为 1 - 10000
*/

#include <iostream>

using namespace std;

int main() {
    int n;
    int y;
    int m = 0;
    int a[1005] = {};

    cin >> n;
    for (int i = 1; i <= n; i++) {
        cin >> a[i];
    }

    // 使用插入排序的方法, 对数组 a[1] ~ a[n] 按从小到大的顺序进行排序
    for (int i = 2; i <= n; i++) {
        int x = a[i];
        int pos = i;
        for (int j = i - 1; j >= 1; j--) {
            if (x < a[j]) {
                a[j+1] = a[j];
                pos = j;
            } else {
                break;
            }
        }
        a[pos] = x;
    }

    // 判断 a[1] ~ a[n] 每相邻的2个数的差值是否相等
    for (int i = 1; i < n; i++) {
        if(i == 1) {
            y = a[i+1] - a[i];
        } else {
            if (a[i+1] - a[i] == y) {
                // nothing
            } else {
                m++;
                break;
            }
        }
    }
    if (m == 0) {
        cout << "YES";
    } else {
        cout << "NO";
    }

    return 0;
}